/**实现instanceof 
 * - 原理：只要右边的函数的prototype，在左边变量的原型链上即可。
 * - 需要了解的知识：原型链
 */
function myInstanceof(instance: any, constructor: Function): boolean {
    if (typeof instance !== 'object' && typeof instance !== 'function' || instance === null) {
        return false
    }
    if (typeof constructor !== 'function') {
        throw TypeError('constructor需要是函数')
    }
    const prototype = constructor.prototype
    let proto = instance.__proto__ //这个 __proto__ 可以换成 Object.getPrototypeOf(instance);
    while (proto) {
        if (proto === prototype) {
            return true
        }
        proto = proto.__proto__  //这个 __proto__ 可以换成 Object.getPrototypeOf(instance);
    }
    return false
}
export default myInstanceof